Skip to content

DNS、TCP/TLS 与从 URL 到页面展示

前半偏 传输层与握手,后半偏 浏览器全链路


第一部分:DNS 与 TCP 连接

DNS 解析(简流程)

用户输入域名后,解析顺序大致为:浏览器缓存 → 操作系统缓存(含 hosts)→ 递归解析器(本地 DNS)→ 根 / 顶级域 / 权威 逐级查询,得到 IP 后各级可做 TTL 缓存

实际项目中还可使用 HTTPDNSCDN CNAME 等优化解析与就近接入。


TCP 三次握手(为何三次)

目的:确认双方收发能力,同步初始序列号,避免历史重复连接请求干扰。

简述:SYNSYN-ACKACK,连接建立后再传 HTTP。


TCP 四次挥手(断开)

一方发起 FIN 表示不再发送数据;另一方确认后可能仍有数据要发,故 全双工关闭 需两端分别释放,常见为 四次 报文交互。


TLS 握手(HTTPS)

在 TCP 之上增加 TLS:协商算法、交换密钥、验证证书,然后才发送加密 HTTP。首次访问延迟主要来自 额外 RTT,可通过 会话恢复、OCSP stapling、HTTP/2 多路复用 等综合优化。


小结

性能排查:DNS 慢 / TCP/TLS RTT 高 会拉长首包时间(TTFB 相关感知)。结合 Network 瀑布图看 排队与握手阶段


第二部分:从 URL 到页面展示

主链路(浓缩版)

DNS → TCP(+TLS)→ 发 HTTP 请求 → 收响应 → 解析 HTML → 拉取 CSS/JS/图片 → 构建 DOM/CSSOM → 布局绘制 →(可选)长连接或关闭


浏览器侧(提要)

  1. 导航:输入合法 URL 则请求该地址;否则可能走默认搜索引擎。
  2. 拿到 HTML:自上而下解析,遇 link/script/img 再发起子请求(具体阻塞行为见 前端优化 / 渲染与关键路径)。
  3. 渲染:DOM + CSSOM → 渲染树 → 布局 → 绘制;JS 默认可能阻塞解析(defer/async 改善)。

「渲染优化」与 HTTP 的关系

  • 减少请求体积与次数:缓存、压缩、合并策略(HTTP/2 下合并策略需重新权衡)。
  • 优先级preloadfetchpriority 等影响关键资源加载顺序。

细节见本站 前端优化 专题;本篇保持 全链路时空顺序 心智模型即可。


小结

概述「输入 URL 发生什么」:按 DNS→TCP/TLS→HTTP→解析渲染 分段说明,并点出 无状态协议 + 静态资源瀑布请求 即可展开。